<?php

/**
 * Description of ClienteEventualServicios
 *
 * @author  Mariano Renkine
 * @author  Fernando Arau
 */
class ClienteEventualServicios extends Servicios
{

  function agregar(ClienteEventualDTO $clienteDTO)
  {
    $repo = new RepoCliente();
    $cliente = $this->deDTO($clienteDTO);
    $cliente->setUsuario($this->ObtenerNombreUsuarioSesion());
    return $repo->agregar($cliente);
  }

  function modificar(ClienteEventualDTO $clienteDTO)
  {
    $repo = new RepoCliente();
    $cliente = $this->deDTO($clienteDTO);
    $cliente->setUsuario($this->ObtenerNombreUsuarioSesion());
    return $repo->modificar($cliente);
  }
  
  function eliminar($id)
  {
    $repo = new RepoCliente();
    return $repo->eliminar($id);
  }

  function buscar($id)
  {
    $repo = new RepoCliente();
    $cliente = $repo->buscar($id);
    return $this->aDTO($cliente);
  }

  function listar()
  {
    $repo = new RepoCliente();
    $clientes = $repo->listar();
    $clientesDTO = null;
    if ($clientes)
    {
      foreach ($clientes as $cliente)
      {
        $clientesDTO[] = $this->aDTO($cliente);
      }
    }
    return $clientesDTO;
  }

  function listarKeyValues()
  {
    $clientes = $this->listar();
    if ($clientes != null && count($clientes) > 0)
    {
      for ($i = 0; $i < count($clientes); $i++)
      {
        $resultado[$i]["key"] = $clientes[$i]->getId();
        $resultado[$i]["value"] = $clientes[$i]->getNombre();
      }
    } else
    {
      $resultado[0]["key"] = "";
      $resultado[0]["value"] = "";
    }
    return $resultado;
  }

  function aDTO(Cliente $cliente)
  {
    $clienteDTO = new ClienteEventualDTO();
    $clienteDTO->setApellido($cliente->getApellido());
    $clienteDTO->setDomicilio($cliente->getDomicilio());
    $clienteDTO->setEmail($cliente->getEmail());
    $clienteDTO->setId($cliente->getId());
    $clienteDTO->setUsuario($cliente->getUsuario());    
    $clienteDTO->setVersion($cliente->getVersion());
    $clienteDTO->setNombre($cliente->getNombre());
    $clienteDTO->setNroDocumento($cliente->getNroDocumento());
    $clienteDTO->setTelefono($cliente->getTelefono());
    $clienteDTO->setDeshabilitado($cliente->getDeshabilitado());
    $clienteDTO->setTipoDocumento($cliente->getTipoDocumento());
    return $clienteDTO;
  }

  function deDTO(ClienteEventualDTO $clienteDTO)
  {
    $cliente = new Cliente();
    $cliente->setApellido($clienteDTO->getApellido());
    $cliente->setDomicilio($clienteDTO->getDomicilio());
    $cliente->setEmail($clienteDTO->getEmail());
    $cliente->setId($clienteDTO->getId());
    $cliente->setUsuario($clienteDTO->getUsuario());
    $cliente->setVersion($clienteDTO->getVersion());
    $cliente->setNombre($clienteDTO->getNombre());
    $cliente->setNroDocumento($clienteDTO->getNroDocumento());
    $cliente->setTelefono($clienteDTO->getTelefono());
    $cliente->setDeshabilitado($clienteDTO->getDeshabilitado() == '' ? 0 : $clienteDTO->getDeshabilitado());
    $tipoDocumento = new TipoDocumento();
    $tipoDocumentoDTO = new TipoDocumentoDTO();
    $tipoDocumentoDTO = $clienteDTO->getTipoDocumento();
    $tipoDocumento->setId($tipoDocumentoDTO->getId());
    $tipoDocumento->setNombre($tipoDocumentoDTO->getNombre());
    $cliente->setTipoDocumento($tipoDocumento);
    return $cliente;
  }

}

?>